package controllers;

import java.sql.Date;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import models.Evento;
import play.mvc.Controller;

public class EventoController extends Controller {
	
	public static void index() {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
        render("Application/cadEvento.html", menu, rodape);
    }
	
	public static void exibicao() {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		try {
			List<Evento> lis = Evento.all();
		
			// Mostra a tela de exibicao
    		render("Application/exibicaoEvento.html", lis, menu, rodape);
		}
		catch(SQLException ex) {
			String msg = "O codigo SQL teve um comportamento inesperado!";
    		
    		// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadEvento.html", script, menu, rodape);
            return;
		}
    }
	
	public static void exibicaoToPresenca() {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		try {
			List<Evento> lis = Evento.allToPresenca();
		
			// Mostra a tela de exibicao
    		render("Application/exibicaoEvento.html", lis, menu, rodape);
		}
		catch(SQLException ex) {
			String msg = "O codigo SQL teve um comportamento inesperado!";
    		
    		// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadEvento.html", script, menu, rodape);
            return;
		}
    }
	
	public static void exibicao(String script) {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		try {
			List<Evento> lis = Evento.all();
		
			// Mostra a tela de exibicao
    		render("Application/exibicaoEvento.html", lis, script, menu, rodape);
		}
		catch(SQLException ex) {
			String msg = "O codigo SQL teve um comportamento inesperado!";
    		
    		// Java Script mostrando a mensagem de erro!
            script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadEvento.html", script, menu, rodape);
            return;
		}
    }
	
	public static void atribuirPresencas(int codigo) {
		PresencaController.exibicao(codigo);
	}

    public static void add() {
    	if(! Application.isLogged()) return;
    	
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
    	
    	String msg = "";
    	
    	// Criando o evento
        Evento evento = new Evento();
        
        // Data
        String data = params.get ("data");
        try {
        	Timestamp date = new Timestamp( new SimpleDateFormat("dd/MM/yyyy").parse(data).getTime() );
        }
        catch(ParseException ex) {
        	msg += "A data nao esta em formato valido. O formato correto e dd/MM/aaaa.";
        	
        	// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadEvento.html", script, menu, rodape);
            
        	return;
        }
        
        // Hora inicial
        String inicio = params.get ("inicio");
        try {
        	Timestamp date = new Timestamp( new SimpleDateFormat("dd/MM/yyyy hh:mm").parse(data + " " + inicio).getTime() );
        	evento.setHorarioInicial(date);
        }
        catch(ParseException ex) {
        	msg += "O horario nao esta em formato valido. O formato correto e hh:mm.";
        	
        	// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadEvento.html", script, menu, rodape);
            
        	return;
        }
        
        // Hora final
        String fim = params.get ("final");
        try {
        	Timestamp date = new Timestamp( new SimpleDateFormat("dd/MM/yyyy hh:mm").parse(data + " " + fim).getTime() );
        	evento.setHorarioFinal(date);
        }
        catch(ParseException ex) {
        	msg += "O horario nao esta em formato valido. O formato correto e hh:mm.";
        	
        	// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadEvento.html", script, menu, rodape);
            
        	return;
        }
        
        evento.setLocal(params.get ("local"));
        evento.setDescricao(params.get ("descricao"));
        
        // Validacao dos campos
        if (evento.getLocal().isEmpty()) {
        	msg += "Local Invalido!\n";
        } else if (evento.getDescricao().isEmpty()) {
        	msg += "Descricao Invalida!\n";
        } else {
        	// Deu certo! Inserir no banco
        	
        	try {
        		evento.save();
        		exibicao();
        	}
        	catch(SQLException ex) {
        		msg = "O codigo SQL teve um comportamento inesperado!";
        		
        		// Java Script mostrando a mensagem de erro!
                String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
                		script += "alert ( \" " + msg + "\" ) </script> ";
                render("Application/cadEvento.html", script, menu, rodape);
                return;
        	}
        	return;
        }
        
        // Java Script mostrando a mensagem de erro!
        String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
        		script += "alert ( \" " + msg + "\" ) </script> ";
        render("Application/cadEvento.html", script, menu, rodape);
	}
    
    public void excluirEvento(int codigoEvento) {
    	if(!Application.isLogged()) return;
    	Evento.delete(codigoEvento);
    	exibicao();
    }
}
